package com.zf.enums;

/**
 * 所有的枚举类都继承了 java.lang.Enum 类，所以自定义的枚举类只能实现接口。
 * 枚举类也可以实现一个或者多个接口，也需要实现该接口所包含的方法。
 * 如果需要每个枚举值在调用该方法时呈现出不同的行为方式，则可以让每个枚举值分别实现该方法：
 */
public enum ImplementInterfaceEnum implements A {
    ONE(12) {
        /**
         * 实现继承的接口中的方法
         */
        @Override
        public void printName() {
            System.out.println("noe-" + this.name());
        }

        @Override
        public void printOrdinal() {
            System.out.println("one-" + this.ordinal());
        }

        /**
         * 重写自身的方法
         */
        @Override
        public void printAge() {
            System.out.println("one-" + this.getAge());
        }
    },

    TWO(13) {
        @Override
        public void printOrdinal() {
            System.out.println("two-" + this.name());
        }

        @Override
        public void printName() {
            System.out.println("two-" + this.ordinal());
        }

        /**
         * 重写自身的方法
         */
        @Override
        public void printAge() {
            System.out.println("two-" + this.getAge());
        }
    };

    /**
     * 属性
     */
    private Integer age;

    /**
     * 自身方法
     */
    public void printAge() {
        System.out.println(getAge());
    }


    public Integer getAge() {
        return age;
    }

    ImplementInterfaceEnum(Integer age) {
        this.age = age;
    }
}
